package com.gxuwz.service;


import com.gxuwz.entity.Leave;
import com.gxuwz.entity.dto.LeaveDto;
import com.gxuwz.entity.vo.LeaveVo;
import com.gxuwz.entity.vo.PageVo;
import com.gxuwz.result.PageInfo;

import java.util.List;

/**
 * @Description:请假申请相关操作的服务接口
 */

public interface LeaveService {

    /**
     * @Description:得到请假申请列表
     * @Param:  [com.gxuwz.entity.dto.LeaveDto, com.gxuwz.result.PageInfo]
     * @Return: com.gxuwz.entity.vo.PageVo
     */
    
    public PageVo getApproveLeaveList(LeaveDto leaveDto, PageInfo pageInfo);

    /**
     * @Description:通过请假申请编号，获取一条请假申请记录信息
     * @Param:  [java.lang.String]
     * @Return: com.gxuwz.entity.vo.LeaveVo
     */
    
    LeaveVo getApproveLeaveInfo(String leaveID);

    /**
     * @Description:得到请假申请列表
     * @Param:  [com.gxuwz.entity.dto.LeaveDto, com.gxuwz.result.PageInfo]
     * @Return: com.gxuwz.entity.vo.PageVo
     */
    
    public PageVo getLeaveList(LeaveDto leaveDto, PageInfo pageInfo,String stuID);

    /**
     * @Description:通过请假申请编号获得一条请假申请记录
     * @Param:  [java.lang.String]
     * @Return: com.gxuwz.entity.vo.LeaveVo
     */
    
    public LeaveVo getLeaveOneByLeaveID(String leaveId);

    /**
     * @Description:添加一条请假申请记录信息
     * @Param:  [com.gxuwz.entity.Leave]
     * @Return: boolean
     */
    
    public boolean addLeaveInfo(Leave leave);

    /**
     * @Description:通过请假申请编号，删除一条请假申请记录
     * @Param:  [java.lang.String]
     * @Return: boolean
     */
    
    public boolean deleteLeaveOne(String leaveId);

    /**
     * @Description:自动生成请假申请编号
     * @Param:  []
     * @Return: java.lang.String
     */
    
    public String getLeaveID();

    /**
     * @Description:对请假申请进行审批
     * @Param:  [java.lang.String, java.lang.String, java.lang.String]
     * @Return: boolean
     */

    boolean approveLeaveInfo(String leaveID, String opinion, String leaveStatus);

    /**
     * @Description:查询需要导出的请假申请列表
     * @Param:  [com.gxuwz.entity.dto.LeaveDto]
     * @Return: java.util.List<com.gxuwz.entity.vo.LeaveVo>
     */

    List<LeaveVo> getExportLeaveList(LeaveDto leaveDto);
}
